dccp: don't duplicate ccid when cloning dccp sock
authorLin, Zhenpeng <zplin@psu.edu>
Wed, 8 Sep 2021 03:40:59 +0000 (03:40 +0000)
committerSalvatore Bonaccorso <carnil@debian.org>
Tue, 28 Sep 2021 04:29:40 +0000 (05:29 +0100)
commit96a71b25da8b83cda7ceee28cd5a6664e6c72321
tree6232cc12c554a0f77a7d4c31b00608108a310124
parent0395660a4e5aad898d4e4af25edf2a69f90c566f
dccp: don't duplicate ccid when cloning dccp sock

Origin: https://git.kernel.org/linus/d9ea761fdd197351890418acd462c51f241014a7
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2020-16119

Commit 2677d2067731 ("dccp: don't free ccid2_hc_tx_sock ...") fixed
a UAF but reintroduced CVE-2017-6074.

When the sock is cloned, two dccps_hc_tx_ccid will reference to the
same ccid. So one can free the ccid object twice from two socks after
cloning.

This issue was found by "Hadar Manor" as well and assigned with
CVE-2020-16119, which was fixed in Ubuntu's kernel. So here I port
the patch from Ubuntu to fix it.

The patch prevents cloned socks from referencing the same ccid.

Fixes: 2677d2067731410 ("dccp: don't free ccid2_hc_tx_sock ...")
Signed-off-by: Zhenpeng Lin <zplin@psu.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name dccp-don-t-duplicate-ccid-when-cloning-dccp-sock.patch
net/dccp/minisocks.c